import History from "./base";

// 没有hash 路径，则将其初始化为路径默认 /
function ensureSlash() {
  if (window.location.hash) {
    return
  }

  window.location.hash = "/";
}

// 获取当前路由hash 路径
function getHash() {
  return window.location.hash.slice(1)
}

class HashHistory extends History {
  constructor(router) {
    super(router);

    // 初始化hash 路由的时候，默认给一个hash 路径 /
    ensureSlash();
  }

  // 监听hash 模式的hash 路径变化
  setupListener() {
    window.addEventListener("hashchange", () => {
      // hash 值变化也需要重新进行跳转
      this.transitionTo(getHash());
    })
  }

  // 手动跳转路由
  push(location) {
    this.transitionTo(location, () => {
      window.location.hash = location;
    })
  }

  // 获取当前的路由路径
  getCurrentLocation() {
    return getHash()
  }
}

export default HashHistory
